/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package occho.model;

import java.sql.SQLException;
import javax.swing.tree.DefaultMutableTreeNode;
import occho.data.*;

/**
 *
 * @author Juan Antonio
 */
public class FachadaGestionAsignaturas {
    private Usuario usuario;
    
    /**
     * Constructor de la clase
     * @param user
     */
    public FachadaGestionAsignaturas(Usuario user) {
        this.usuario=user;
    }
    
    /**
     * Inserta una asignatura en la base de datos.
     * @param nomAsig
     * @return boolean
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public boolean insertarAsignatura(String nomAsig) throws SQLException, ClassNotFoundException{
        Asignatura asig = new Asignatura();
        asig.setNombre(nomAsig);
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        AsignaturaDAO asignaturaDAO = daoFactory.getAsignaturaDAO();
        boolean insertado = asignaturaDAO.insertarAsignatura(asig, this.usuario);
        this.usuario.setAsignaturas(asignaturaDAO.seleccionarAsignaturas(this.usuario));
        return insertado;
    }
    
    /**
     * Elimina una asignatura de la base de datos
     * @param ultimoNodo
     * @return boolean
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public boolean borrarAsignatura(DefaultMutableTreeNode ultimoNodo) throws SQLException, ClassNotFoundException{
        Asignatura asig = (Asignatura)ultimoNodo.getUserObject();
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        AsignaturaDAO asignaturaDAO = daoFactory.getAsignaturaDAO();
        boolean borrado=asignaturaDAO.borrarAsignatura(asig);
        this.usuario.setAsignaturas(asignaturaDAO.seleccionarAsignaturas(this.usuario));
        return borrado;
    }
    
    /**
     * Inserta un tema en la base de datos.
     * @param nomTema
     * @param ultimoNodo
     * @return boolean
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public boolean insertarTema(String nomTema, DefaultMutableTreeNode ultimoNodo) throws SQLException, ClassNotFoundException{
        Tema tema = new Tema();
        tema.setNombre(nomTema);
        Asignatura asig = (Asignatura)ultimoNodo.getUserObject();
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        AsignaturaDAO asignaturaDAO = daoFactory.getAsignaturaDAO();
        TemaDAO temaDAO = daoFactory.getTemaDAO();
        boolean insertado=temaDAO.insertarTema(tema, asig);
        this.usuario.setAsignaturas(asignaturaDAO.seleccionarAsignaturas(this.usuario));
        return insertado;
    }
    
    /**
     * Elimina un tema de la base de datos
     * @param ultimoNodo
     * @return boolean
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public boolean borrarTema(DefaultMutableTreeNode ultimoNodo) throws SQLException, ClassNotFoundException{
        Tema tema = (Tema)ultimoNodo.getUserObject();
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        TemaDAO temaDAO = daoFactory.getTemaDAO();
        AsignaturaDAO asignaturaDAO = daoFactory.getAsignaturaDAO();
        boolean borrado=temaDAO.borrarTema(tema);
        this.usuario.setAsignaturas(asignaturaDAO.seleccionarAsignaturas(this.usuario));
        return borrado;
    }
    
    /**
     * Inserta ua pregunta en la base de datos.
     * @param enunPregunta
     * @param ultimoNodo
     * @return boolean
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public boolean insertarPregunta(String enunPregunta, DefaultMutableTreeNode ultimoNodo) throws SQLException, ClassNotFoundException{
        Tema tema = (Tema)ultimoNodo.getUserObject();
        Pregunta preg = new Pregunta();
        preg.setEnunciado(enunPregunta);
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        PreguntaDAO preguntaDAO = daoFactory.getPreguntaDAO();
        AsignaturaDAO asignaturaDAO = daoFactory.getAsignaturaDAO();
        boolean insertado=preguntaDAO.insertarPregunta(preg, tema);
        this.usuario.setAsignaturas(asignaturaDAO.seleccionarAsignaturas(this.usuario));
        return insertado;
    }
    
    /**
     * Elimina una pregunta de la base de datos.
     * @param ultimoNodo
     * @return boolean
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public boolean borrarPregunta(DefaultMutableTreeNode ultimoNodo) throws SQLException, ClassNotFoundException{
        Pregunta pregunta = (Pregunta)ultimoNodo.getUserObject();
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        PreguntaDAO preguntaDAO = daoFactory.getPreguntaDAO();
        AsignaturaDAO asignaturaDAO = daoFactory.getAsignaturaDAO();
        boolean borrado=preguntaDAO.borrarPregunta(pregunta);
        this.usuario.setAsignaturas(asignaturaDAO.seleccionarAsignaturas(this.usuario));
        return borrado;
    }
    
    /**
     * Inserta una respuesta en la base de datos
     * @param enunRespuesta
     * @param esCorrecta
     * @param ultimoNodo
     * @return boolean
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public boolean insertarRespuesta(String enunRespuesta, Boolean esCorrecta, DefaultMutableTreeNode ultimoNodo) throws SQLException, ClassNotFoundException{
        Pregunta pregunta = (Pregunta)ultimoNodo.getUserObject();
        Respuesta resp = new Respuesta();
        resp.setTexto(enunRespuesta);
        resp.setEsCorrecta(esCorrecta);
        OracleDAOFactory daoFactory =OracleDAOFactory.getInstancia();
        RespuestaDAO respuestaDAO = daoFactory.getRespuestaDAO();
        AsignaturaDAO asignaturaDAO = daoFactory.getAsignaturaDAO();
        boolean insertado=respuestaDAO.insertarRespuesta(resp, pregunta);
        this.usuario.setAsignaturas(asignaturaDAO.seleccionarAsignaturas(this.usuario));
        return insertado;
    }
    
    /**
     * Elimina una respuesta de la base de datos.
     * @param ultimoNodo
     * @return boolean
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public boolean borrarRespuesta(DefaultMutableTreeNode ultimoNodo) throws SQLException, ClassNotFoundException{
        Respuesta respuesta = (Respuesta)ultimoNodo.getUserObject();
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        RespuestaDAO respuestaDAO = daoFactory.getRespuestaDAO();
        AsignaturaDAO asignaturaDAO = daoFactory.getAsignaturaDAO();
        boolean borrado=respuestaDAO.borrarRespuesta(respuesta);
        this.usuario.setAsignaturas(asignaturaDAO.seleccionarAsignaturas(this.usuario));
        return borrado;
    }
}
